cd    ~/桌面/      切到家目录的桌面文件夹下

mkdir    test_project     创建一个test_project的空文件夹

cd    test_project      切到test_project目录下

git    init     将当前目录初始化为一个git仓库

Git操作总结

ll    查看当前test_project下目录下的文件

Git操作总结

ll    .git    查看.git目录下的文件 

Git操作总结

touch     test1.txt    test2.txt    test3.txt         创建三个测试文件

mkdir    ignoreDir             创建一个文件夹,用来测试git  ignore

 touch    ignoreDir/ignoreFile1.txt

git    status      查看当前git仓库的各种状态信息。现在新建的几个文件都还没有被git跟踪,不是版本文件

Git操作总结

 git    add   .       将所有非版本文件添加进git,将所有版本文件的改动添加到暂存区,当然git  add 后面也可以跟单个文件,或者通配符。运行后执行git    status

Git操作总结

git    rm   -r     --cached     ignoreDir/       将ignoreDir文件夹下面的所有文件移除版本控制,这里加了-r表示递归删除。当然也可以不加-r,直接移除单个文件,或者使用通配符。然后git    status,会继续提示ignoreDir/不是版本文件

Git操作总结

ignoreDir目录下面的文件夹是我们不想进行版本控制,可以创建一个.gitignore文件,配置忽略的文件,在JavaWeb开发中,maven项目中的target目录,日志文件,集成开发环境生成的配置文件等都需要配置为不需要跟踪

touch    .gitignore

vim    .gitignore          添加ignoreDir为git忽略的文件

Git操作总结

保存后  git   status

Git操作总结

git    add    .gitignore       将.gitignore添加到版本文件

git    commit    -m    "[add]添加test1~test3三个测试文件,添加.gitignore文件"                   提交到本地仓库

Git操作总结

 git    log                   查看当前分支的提交记录,也已在后面接分支名   比如  git   log   branch_1.  可以看到当前分支的HEAD在上一次提交上,8b9a981......这一串数字是一次提交的id

Git操作总结

vim    est1.txt        在test1.txt中添加一行    "test1的第一行" 

vim    test2.txt        在test2.txt中添加一行     "test2的第一行"

git    diff       比对工作区和暂存区之间的差异, git   diff    [path] 比对指定路径的差异

git    diff    [commit-id]    [path]    比对指定提交和工作区的差异

git    diff    --cached    [commit-id]    比对指定提交和暂存区的差异

git    diff    [commit-id]    [commit-id]    比对两次提交之间的差异

Git操作总结

git    add    .              将test1.txt和text2.txt的改动添加到暂存区

git    reset    HEAD    test2.txt      将test2.txt的修改移除暂存区

Git操作总结

git    commit    -m    "[add]在test1.txt中新加了一行"        将test1.txt的修改提交

git    add    .  将test2.txt的修改添加到暂存

git    commit    -m     "[add]在test2.txt中新加了一行"         将test2.txt的修改提交,  这时候已经有三次提交了,git  log可以看到提交记录

git    rebase   -i    HEAD~2           将两次最近的两次提交压缩为一个提交。

rebase命令还用于分支合并,两个不同的分支合并,或者本地分支和远程分支合并(git   pull如果本地分支和远程分支存在分叉,就会自动合并),合并过程中会产生一次新的提交,让提交记录不那么清晰明了,使用rebase可以避免分叉,让提交是线性的。但是rebase可能会改变原有的提交,如下图所示,rebase后,c5这次提交直接在c4基础上了,无法还原c5这个提交。在开发过程中,合并分支最好不要用rebase,在自己单独的分支开发的时候,可以考虑使用rebase压缩提交。

Git操作总结

Git操作总结

 

Git操作总结

将cef9c4b的提交前面的  pick改成 s,表示将这次提交压缩到它的父提交,修改完后保存,会跳转到一个编辑注释的页面,写完注释后保存,然后git    log,可以看到之前HEAD和HEAD之前的一个提交被压缩为了同一个提交

Git操作总结

 mkdir     ../test_project_local          创建一个和test_project同级的目录

cd    ../test_project_local                   切到刚才创建的目录

git   clone    /home/fengxing/桌面/test_project           将test_project的git仓库克隆到当前路径

cd    test_project                         切换到刚刚clone的git仓库,把test_project_local下面的仓库作为本地仓库,test_project下面的仓库作为远程仓库

git    checkout     -b    branch_1    origin/master              基于远程的master分支创建一个名为branch_1的分支

这个命令相当于  git   branch  branch_1    origin/master    +     git   checkout  branch_1 ,先创建一个分支,然后切换到创建的那个分支.  branch_1的远程分支是master分支,需要将跟踪的远程分支设置为同名的分支

Git操作总结

git    push   --set-upstream    origin    branch_1        将当前分支跟踪的远程分支设置为远程的branch_1分支

或者使用git   push  -u    origin    branch_1

Git操作总结

git    branch    -a           查看当前所有的分支

Git操作总结

在branch_1分支上在test.txt中添加一行, "本地的branch_1分支在test1.txt中增加一行"

git    commit     -m    "[add]本地的branch_1分支在test1.txt中增加一行"

git    checkout    master

在master分支的test.txt文件也添加一行, "本地的master分支在test1.txt中增加一行" 

git    commit    -m    "[add]本地的master分支在test1.txt中增加一行"      这时候本地的master分支领先远程master分支一个提交

Git操作总结 

git    tag    -a   matser_test1_add_one_column_tag    -m    "本地的master分支在test1.txt中增加一行"      给上一次提交打了一个标签,tag相当于一种标记,这里打标记是为了后面回退版本方便,在实际开发中,可以用tag标记项目的版本叠代

git    tag    -a    [tag名]    [commit-id]    -m    [tag的注释]  没有commit-id默认用当前的头创建tag

git    tag     查看所有的tag 

git    show    [tag名]     显示一个tag的详细信息

git    push    origin    [tag名]     将tag推送到远程

git     tag    -d    [tag名]     删除本地tag

git    push    --delete    origin    [tag名]     删除远程tag

Git操作总结  

git    reset    --hard   origin/master  将本地master分支回退成和远程master分支一样,  origin/master表示一次提交,这里origin/master就是本地master的上一个提交,当然也可以直接用commit-id表示,等价于

git  reset   --hard   0d3630028f484918316d9eacfcc9c3c36c51ca6a

--hard          回退到版本之后的修改直接丢失

--soft           回退版本之后的修改到暂存区

--mixed       到工作区

Git操作总结

git    reset    --hard    matser_test1_add_one_column_tag         再重置回来,将master分支的头放到matser_test1_add_one_column_tag上

git    merge    branch_1       当前在master分支,这表示将branch_1分支合并到master分支,branch_1分支不会做任何改变,由于master和branch_1都改变了test.txt文件,所以合并会有冲突

Git操作总结

vim    branch_1     解决冲突后  add  , commit再次提交

Git操作总结 

git    add    .

git    commit    -m    "[merge]合并branch_1到master,解决了test1的冲突"     这里可以看到,合并分支会产生一次提交,在开发过程中因为分支合并会产生合同多余的提交

 

 

 

 

 

 

 

相关文章: