Git常用的11个命令整理

Git常用的11个命令整理

1 git clone
git  clone https: // github.com/bcit-ci/CodeIgniter.git                        只克隆
git  clone https: // [email protected]/bcit-ci/CodeIgniter.git        携带用户名
https: // username:[email protected]/bcit-ci/CodeIgniter.git       携带用户名和密码
2.git add -A
git add -A   # 提交所有的文件,所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库
git add  .    # 提交当前目录
git add  -u   # add to index only files modified or deleted and not those created 
git add -i    # 查看中被所有修改过或已删除文件但没有提交的文件
[s]tatus:  查看当前的文件状态
[u]pdate: 把已经tracked的文件添加到索引库中
[r]evert: 把已经添加到索引库中的文件从索引库中剔除。
[a]dd untracked 把已经tracked的文件添加到索引库中
[p]atch  
[d]iff: 可以比较索引库中文件和原版本的差异
[q]uit: 退出git add -i命令系统
[h]elp:
3.git commit -m
一般仓库中的文件可能存在于这三种状态:
    1)Untracked files → 文件未被跟踪;
    2)Changes to be committed → 文件已暂存,这是下次提交的内容;
    3) Changes bu not updated → 文件被修改,但并没有添加到暂存区。如果 commit 时没有带 -a 选项,这个状态下的文件不会被提交。

git commit 提交暂存区里的内容
git commit -a  除了将暂存区里的文件提交外,还提交 Changes bu not updated 中的文件。
git commit -a -m "info"
git commit --amend 
git commit --amend -a  # 又或者我们发现在提交时忘记使用 -a 选项,导致 Changes bu not updated 中的内容没有被提交,我们可以使用
#
reference:http://www.cnblogs.com/eddy-he/archive/2012/03/22/git_commit.html
4.git push
   git pull
    git pull  < 远程主机名 >   < 远程分支名 >:< 本地分支名 >
# 比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
git pull origin  next:master
# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin  next
相当于:
git fetch origin
git merge origin/ next
# 如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
 git pull origin
# 如果当前分支只有一个追踪分支,连远程主机名都可以省略。
git pull
   

5.git config --global user.name
   git config --global user.email
   git config --global  credential.helper store
   设置用户名和邮箱,设置存储密码
6.git fetch
   获取远程的更新
7.git merge
  合并更新
8.git  stash (这个功能大家争议比较多)
备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop:
 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash  list:
   显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear:
清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。

使用git的时候,我们往往使用branch解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码 commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用'git stash'就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完Bug,提交到服务器上后,再使用'git stash apply'将以前一半的工作应用回来。也许有的人会说,那我可不可以多次将未提交的代码压入到栈中?答案是可以的。当你多次使用'git stash'命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,'git stash list'命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用'git stash apply stash@{1}'就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用'git stash clear'来将栈清空。
在这里顺便提下git format-patch -n , n是具体某个数字, 例如 'git format-patch -1' 这时便会根据log生成一个对应的补丁,如果 'git format-patch -2' 那么便会生成2个补丁,当然前提是你的log上有至少有两个记录。


stash的话一定是基于某个版本的,而且将stash从栈内拿出来,一定是需要还原到对应的版本。通过git stash list可以清晰的看到每个stash对应的版本,如:
stash@{0}: WIP on master: e95dc37 Require administrator authority...
stash@{1}: WIP on md_develop: fcaa18f Add an object to recieve md...
比如你需要恢复stash@{1}这时候你需要做的是:
git checkout fcaa18f
git stash apply stash@{1}
尽量不使用类似git stash pop的方法。如果你当前fcaa18f所在的分支有继续往前推进的话,建议在fcaa18f上建立新的分支,然后继续stash@{1}的修改,并将stash@{1}的内容提交到新的分支上:
git branch new_develop
git checkout new_develop
git add FILES
git commit
后续再通过cherry-pick的方式,将修改的内容应用到其他需要这个修改的分支之上
# reference :http://www.cppblog.com/deercoder/archive/2011/11/13/160007.html
 9.git log
10.git status
11:git show

你可能感兴趣的:(Git常用的11个命令整理)