Skip to content

Commit 664ce41

Browse files
committed
git usebook
1 parent 344ca79 commit 664ce41

File tree

1 file changed

+127
-0
lines changed

1 file changed

+127
-0
lines changed

git用法.txt

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
修改(创建)文件-->工作区(git add)-->暂存区(commit)-->版本库
2+
3+
安装git
4+
ubuntu:apt-get install git
5+
6+
创建版本库
7+
仓库需要创建文件夹,可以不为空
8+
mkdir /tmp/gitdatabase
9+
cd /tmp/gitdatabase#进入文件夹
10+
git init 初始化仓库,当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的.
11+
mkdir readme.txt#创建一个文件
12+
13+
git工作区、暂存区、版本库对比使用
14+
git add readme.txt #把文件添加到暂存区,后面可以跟多个文件
15+
git commit -m "wrote a readme file"#提交到版本库
16+
git status #查看当前仓库状态
17+
git diff readme.txt #查看difference,工作区与暂存区的对比,显示的格式是Unix通用的diff格式
18+
--cached #是暂存区与分支的对比
19+
HEAD --readme.txt #是工作区与分支(版本库)的对比
20+
git log #查看历史记录,当你回退到某个版本,此版本之后的记录,就自动抹去了
21+
--pretty=oneline #在一行简单显示信息
22+
git reset #命令既可以回退版本,也可以把暂存区的修改回退到工作区。
23+
git reset --hard HEAD^ #回退到上一版本
24+
--hard HEAD^^ #回退上上版本
25+
git reflog #记录每一次的命令
26+
第一次修改 -> git add -> 第二次修改 -> git commit#会导致第二次修改没有被提交
27+
第一次修改 -> git add -> 第二次修改 ->git add -> git commit#正常提交
28+
git diff HEAD -- readme.txt #查看工作区和版本库里最新版本的区别,显示的格式是Unix通用的diff格式
29+
git checkout -- readme.txt 把工作区的修改全部撤销:
30+
1.自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
31+
step1:git checkout -- readme.txt
32+
2.已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
33+
step1:git reset HEAD readme.txt #暂存区的修改回退到工作区
34+
step2:git checkout -- readme.txt
35+
git rm test.txt #删除工作区的文件并且将删除的动作提交到暂存区
36+
git checkout -- test.txt#,还原文件,用版本库里的版本替换工作区的版本
37+
38+
上传到远程Github
39+
1. ssh-keygen -t rsa -C "youremail@example.com" #在本地创建公钥
40+
2. cp 公钥到Github上
41+
3. git remote add o git@github.com:pythonohtyp/github.git #连接远程库#o->origin 出错??
42+
4. git push -u o master #推送文件到远程库
43+
5. git remote -v #查看连接的远程库
44+
6. git remote re origin #删除连接的远程库
45+
从远程库克隆
46+
1. git clone git@github.com:pythonohtyp/pyhton_learn.git #从远程克隆到当前文件夹内,(不要在别的工作区执行)
47+
2. 当前文件会生成一个同名文件夹
48+
分支管理
49+
创建与合并分支
50+
1. git checkout -b dev #创建dev分支并切换到dev
51+
== git branch dev #创建
52+
git chechout dev#切换
53+
2. git branch #查看所有分支,当前分支前有*
54+
3. git merge dev #合并dev分支到当前分支 ,此时当前分支为master
55+
4. git branch -d dev #删除dev分支
56+
57+
解决冲突
58+
当两个分支同时在编辑不同内容并且都提交后,两分支在合并时会出现冲突,
59+
查看要提交的文件会出现“<<<<<<<,=======,>>>>>>>标记”,把这些内容删除后,补充正确的内容再提交,
60+
最后删除不用的分支。
61+
分支管理策略
62+
默认方式是用Fast forward 模式,删除分支后,会丢掉分支信息
63+
如果禁用Fast forward(--no-ff),git会在merge时生成新的commit,从分支历史可以看到分支信息。
64+
HEAD
65+
\
66+
\
67+
master
68+
|
69+
O---------O---------O------O
70+
\ /
71+
\ /
72+
O(dev)
73+
分支策略,master分支应该最稳定,仅用来做版本发布;
74+
干活的话在dev上,版本发布时合并到master;
75+
BUG分支
76+
当有紧急BUG需要修复时,保存现在正在做的事,然后创建临时分支,修复BUG,合并(merge)后,再回原来分支工作
77+
git stash #保存工作现场
78+
git stash list #查看工作现场列表
79+
恢复现场:
80+
1. git stash apply #stash内容不删除,需要git stash drop 删除
81+
2. git stash pop #恢复的同时把stash内容删除
82+
Feature分支
83+
开发一个新feature,最好新建一个分支
84+
git checkout -b feature-vulcan
85+
vi vulcan.py
86+
git commit -m "add feature vulcan"
87+
git checkout dev
88+
新功能取消
89+
git branch -d feature-vulcan #销毁失败。因为 feature-vulcan 没有被合并,所以强制销毁
90+
git branch -D feature-vulcan #强制销毁
91+
多人协作
92+
推送分支
93+
git push origin master
94+
git push origin dev
95+
并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
96+
master分支是主分支,因此要时刻与远程同步;
97+
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
98+
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
99+
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
100+
抓取分支
101+
git clone git@github.com:michaelliao/learngit.git #另外一个人远程克隆下来,只能看到master分支
102+
git branch
103+
git checkout -b dev origin/dev #创建远程的dev到本地
104+
在dev上开发,编辑同一文件,上传
105+
你也作出修改(push)上传,如果冲突
106+
需要先git pull 下拉最新版本,如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to=branch-name origin/branch-name
107+
合并有冲突,解决冲突,再本地提交
108+
标签(tag)管理
109+
git checkout master #进入master分支
110+
git tag v1.0 #打新标签
111+
git tag #查看所有标签
112+
为之前的commit打标签
113+
git log --pretty=oneline --abbrev=commit #找到 commit id
114+
git tag v0.9 commit-id
115+
或git tag -a v0.1 -m "version 0.1 released" commit-id #带有说明
116+
git tag -d v0.1 #删除标签
117+
git push origin :refs/tags/<tagname> #删除一个远程标签
118+
git push origin v1.0 #推送标签到远程
119+
git push origin --tags #推送所有尚未推送的标签
120+
配置别名
121+
git config --global alias.st status
122+
git config --global alias.co chechout
123+
git config --global alias.ci commit
124+
git config --global alias.br branch
125+
126+
127+

0 commit comments

Comments
 (0)