1. 开始git

1.1 开始一个新的项目,初始化新的代码仓库
要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:

1
git init

会在当前目录下生成一个.git目录,包含了所有git需要的数据和资源

1.2 把服务端的项目拷贝到本地
git支持许多传输协议,如http、https、git、ssh等,下面例子使用git协议

1
git clone git://github.com/andymccurdy/redis-py.git

2.跟踪文件

跟踪某个文件或者某个目录下所有文件,就是把需要跟踪的文件加入暂存区(stage),下面把当前目录下的所有文件加入到暂存区

1
git add ./

3. 查看当前文件状态

git status或者git status xx(指定目录或者文件的状态)
执行

1
git status

# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use “git rm –cached …” to unstage)
#
#new file:   c/file_operator/.file_cp.c.swp
#new file:   c/file_operator/file_cp
#new file:   c/file_operator/file_cp.c
#new file:   c/file_operator/file_create
#new file:   c/file_operator/file_create.c
#new file:   c/file_operator/file_time
#new file:   c/file_operator/file_time.cached可以看到,执行git add ./后,当前目录下这些文件已经被跟踪了,被添加到暂存区,同时 (use “git rm –cached…” to unstage)提示你可以使用该命令取消跟踪。

注:如果你git add xx后又修改了xx文件,此时应该重新执行git add xx,把最新的xx文件添加到暂存区

4.取消跟踪文件

与跟踪文件相反,取消跟踪就是把该文件或目录从暂存区(stage)移除

1
git rm --cached  c/file_operator/.file_cp.c.swp

ps:此时.file_cp.c.swp文件已经从暂存区域删除,但是仍在当前目录下,如果想把该文件也从工作目录中删除,执行

1
2
git rm c/file_operator/.file_cp.c.swp
git status

# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use “git rm –cached …” to unstage)
#
#new file:   c/file_operator/file_operatorle_cp
#new file:   c/file_operator/file_cp.c
#new file:   c/file_operatorle_cperator/file_create
#new file:   c/file_operator/file_create.c
#new file_operatorile:   c/file_operator/file_time
#new file:   c/file_operator/file_timeime.c
# Untracked files:
#   (use “git add …” to include in what will be committed)
#
#c/file_operator/.file_cp.c.swp

可以看到 c/file_operatorrator/.file_cp.c.swp 已经不在stage区了。可以通过git add重新添加到stage区

5.忽略某些文件

在实际项目中,有些文件不需要使用git进行管理,比如:.pyc文件,.class文件,.o文件,.swp文件的等,我们可以在项目根目录下创建一个名为 .gitignore的文件,列出要忽略的文件。git默认会读取项目目录下的.gitignore文件(跟.git同目录)

1
vim .gitignore

#git进行管理时,忽略以下文件

c/file_operator/*.swp
*.o

所有空行或者以注释符号 # 开头的行都会被 Git 忽略,以上设置忽略所有.o文件,同时忽略c/file_operator/目录下的所有.swp文件
另外,还可以在配置项中通过core.excludesfile来指定ignore文件。

1
2
3
git config --system core.excludesfile ~/.gitignore_system
git config --global core.excludesfile ~/.gitignore_global
git config core.excludesfile .gitignore_local

注意:

git config –system 设置系统配置
git config –global 设置用户配置
git config  设置项目配置

 

6.提交更新

现在把暂存区域中的文件提交到仓库,每次准备提交之前,运行git status看看需要提交的文件是不是都已经暂存了。

1
git commit -m “注释”

[master (root-commit) 264c7c4] cc
59 files changed, 1266 insertions(+), 0 deletions(-)
create mode 100755 c/file_operator/file_cp
create mode 100755 c/file_operator/file_cp.c
create mode 100755 c/file_operator/file_create
create mode 100755 c/file_operator/file_create.c
…..

提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么( 264c7c4),以及在本次提交中,有多少文件修订过,多少行添改和删改过.
ps:在提交的时候,给 git commit 加上-a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤:git commit -a -m ‘xxxx’

7. 移动文件

1
git mv test1.c test2.c

相当于执行了

1
2
3
mv test1.c test2.c
git rm test1.c
git add test2.c

 

8.修改最后一次提交

有些时候我们执行git commit -m “cc” 执行后,发现还有文件没有添加到暂存区,想撤销刚才的提交操作,可以使用git commit –amend修改最后一次提交,重新提交,否则就需要多一次提交。
如:

1
2
3
git commit -m 'cc'
git add forgotten_file
git commit --amend

上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。

 

9.浏览更新历史

1
git log

commit 264c7c4c56aa398123015da290b7d710d6560cb4
Author: alexzhou
Date:   Sun Jun 17 20:14:42 2012 +0800

cc

git log可以指定输出格式,具体可以参考网上其它资料

如:列出user.py的所有改动历史,每条记录显示在一行

1
git log --pretty=oneline user.py

查看具体的某次改动

1
git show 哈希值

 

10. 恢复单个文件历史版本

查看文件历史记录:git log test.py
得到历史版本号,恢复该文件:
git reset 2e17053b4f5da3b378d6155a174523588d104338 test.py

 

11. 从服务端接收数据

1
git pull

 

12. 推送数据到服务端

执行git commit后,只是把更新提交到本地仓库,执行git push后才把本地修改更新到服务端

1
git push