Git操作流程

原创
2019/06/22 05:29
阅读数 47
  • 1.提交代码的基本操作
查看修改内容
git status 或者git status --short {以短标签的形式显示}
* 红色的M表示文件已修改,但是未加入到提交内容;使用"git add 文件名"之后M变成绿色,表示下次提交的时候会将修改加入提交,否则提交的时候不会包含此文件的修改;
* 红色的??表示新增加了一个文件,但是并未加入到版本控制。使用“git add 文件名”之后??变成绿色的A,表示下次commit的时候,会将此文件加入到当前分支中;

同步远程代码
git pull origin master
此命令用于同步当前分支所追踪的远程分支。执行git config -e可以查看和修改各本地分支所追踪的远程分支。修改完后重新执行git pull即可同步新追踪的分支的代码。

更新本地仓库缓存
git fetch
如果执行git pull没有更新到远程的代码,有可能是缓存在本地的远程分支过时了,pull到的是本地的缓存,可以执行git fetch来刷新本地的远程仓库缓存。


查看[<path>]中所有修改过或已删除文件但没有提交的文件
git add -i [<path>]
git add -f 文件名 # 强制添加到版本库
diff: 可以比较索引库中文件和原版本的差异
add untracked : 可以把还没被git管理的文件添加到索引库中
update: 把已经tracked的文件添加到索引库中
merge: 将指定分支合并到当前分支

将代码提交到本地仓库
git commit

将代码提交到本地仓库并修改注释
git commit 用于提交暂存区的文件,随后会在vim中添加注释.
git commit -m '注释内容'   用于提交暂存区的文件和注释.
git commit -am '注释内容'  用于提交跟踪过的文件和注释,会自动add修改的文件.
git commit --amend '注释内容'   修改最近一次的提交的注释

合并分支,将branch1 合并到当前分支
git merge branch1
撤销本次合并
git merge --abort

提交代码到远程分支
git push <远程主机名> <本地分支名>:<远程分支名> 当本地分支名和远程分支名想同时,可以省略远程分支名

强制提交本地代码到远程分支,覆盖
git push -f(相当于 --force)

提交的同时指定trach branch默认追踪分支,该分支下次pull的时候不用指定origin,配置文件中也可以看得到
git push -u

将所有本地分支都推送到origin主机。
git push --all origin

撤销未提交的修改(没有进行add过的被修改过的文件)
git checkout FileName
撤销当前目录下所有的修改
git checkout .//

取消添加文件(撤销已经被add添加进版本库中的文件)
git reset FileName

版本回滚(撤销提交)
git reset --hard Head 重置所有操作到该Head
git reset --soft Head   仅仅把HEAD指向该次commit, 所有操作全部保留
git revert Head     生成一个新的提交用以撤销前一次 commit
git revert HEAD^    生成一个新的提交用以撤销前前一次 commit

撤销某次操作(通过新的提交来撤销某一个commit中的操作)
git revert commitId(普通操作,不能用来撤销一个merge) 通过一个新的commit来进行一次撤销指定commitId的操作.

git revert 一个Merge的提交,会报错:is a merge but no -m option was given这是因为你revert的那个commit是一个merge commit,它有两个parent, Git不知道base是选哪个parent,就没法diff,所以就抱怨了,所以你要显示告诉Git用哪一个parent。git revert sidsad8 -m 1
这样就选parent 1,那么parent 1又是哪一个呢?通过git log 可以看到每次merge的parent 
一般来说,如果你在master上mergezhc_branch,那么parent 1就是master,parent 2就是zhc_branch.

revert注释:
    revert过程有可能遇到冲突,要么git revert --abort终止此次revert操作,
    代码还原至revert命令前。要么手动消除冲突(同普通的冲突解决),然后add commit;
    reset 是直接将版本撤回到指定的位置,revert 是通过再次提交一个版本来取消某一次的提交,仅仅是某一次.

git reset和git revert的区别:
    1. reset 是直接将版本撤回到指定的位置,revert是通过再次提交一个版本来取消某一次的提交,仅仅是某一次.
    2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。 
    3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
  • 2.保存在暂存区
存放已修改的代码到本地缓存中(不加参数, 只保存,无备注)
git stash  save "添加备注"

查看stash列表
git stash list

读取还原stash代码(不加参数,默认最近保存的)读取后删除该次保存
git stash pop stash@{id}
读取还原stash代码 读取后不删除该次保存
git stash apply stash@{id}

删除stash保存的(不加参数,默认最近保存的)
git stash drop

清空stash列表
git stash clear
  • 3.将已经加入版本库的文件取消
将物理文件删除同时从代码库中移除
git rm

将物理文件夹删除同时从代码库中移除
git rm -r

不删除物理文件,仅将该文件从缓存中删除
git rm --cached 文件路径 

不仅将文件从缓存中删除还会将物理文件删除,(不会进入回收站)
git rm --f文件路径

仓库忽略一个文件,即使这个文件已经存在git库中,每次修改都不会提示你。
    # 执行命令将db.php加入不提交队列:
    git update-index --assume-unchanged 文件名
    # 执行命令将db.php取消加入不提交队列:
    git update-index --no-assume-unchanged 文件名
    使用git rm 将文件从版本控制中删除,可能会影响到别人.如, 本地文件做出了修改,但是又不想提交的时候用这个最合适,因为这时候放在gitignore中是没用的.
  • gitignore小作用
gitignore 还有个有意思的小功能, 一个空的 .gitignore 文件 可以当作是一个 placeholder 。
当你需要为项目创建一个空的 log 目录时, 这就变的很有用。 
你可以创建一个 log 目录 在里面放置一个空的 .gitignore 文件。
这样当你 clone 这个 repo 的时候 git 会自动的创建好一个空的 log 目录了。
  • 注释
在项目中文件.git/info/exclude 添加需要忽略的文件和在项目中添加.gitignore的结果是一样的.
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部