Git使用经验 (慢慢更新)

GIT practical experience

  1. 宏观上,开发方式应为:

    • 保持 master 无bug,能够pull直接用。
    • 开发的新功能、要测试的内容放在其他分支上,最后再来 emerge
  2. Git别上传的内容:

    • 可以通过在.git所在文件夹下添加.gitignore解决;最好每次注意,添加需要的项目,而不是 add .
    • 不要随意上传会经常修改的文本文件,这样会造成 .git 文件夹极大,每次git clonegit pull时候都会把这些历史记录下载下来,浪费资源。
    • 不要比如上传.vscode等编辑器配置文件、pycache等cache文件。

常用GIT操作

1. git clone/pull

git clone 一般用于第一次下载git的内容,像是第一次下载一个app;
git pull一般是clone之后用,更新别处提交的内容,像是更新应用。

git clone 

# -b 选择分支进行clone,之后也能切换到其他分支
git clone -b branch_a 

# --depth=n 只clone最近n次的提交,之前的东西不管(可以减少占用.git的空间)
git clone --depth=1 
# pull 当前分支
git pull
git pull origin

# 将远程分支的branch_a拉到本地分支branch_b
# 如果branch_b就是当前本地分支,则可以省略
git pull origin branch_a:branch_b

2. git add

git add 
# 常用
git add *.py
# 全部提交,建议使用.gitignore
git add .

.gitiginore文件

  1. 作用

    • 在该文件中定义相应的忽略规则,来管理当前文件夹下的文件的Git提交行为。
    • 需要注意的是,这种方式指定的忽略文件的根目录是项目根目录。
    • 实质是编辑当前项目下的 .git/info/exclude文件,然后将需要忽略提交的文件写入其中。
  2. 文件规则 eg

    # file .gitignore
    # 注释用#
    *.log
    *.temp
    # !代表例外
    !.gitignore
    !App.class    
  3. 提交

    • gitignore 文件是可以提交到公有仓库中,这就为该项目下的所有开发者都共享一套定义好的忽略规则。

3. git commit & git push

commit: 提交到暂存区

git commit -m "message"

# 将所有!已跟踪!文件中的执行修改或删除操作的文件都提交到本地仓库
git commit -m "message"

# 可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中
# 可能犯了一些小错误之类的,没必要多增加一次commit的时候用
git commit --amend

push: 提交到远程端

git push <远程主机名> <本地分支名> <远程分支名>

# 如果远程分支被省略,则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
git push origin master

# 如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
git push origin

# 如果当前分支只有一个远程分支,那么主机名都可以省略(如果同时上传gitlab github就不能这么用)
git push

# 删除远程分支branch_a
git push origin --delete branch_a
git push origin : branch_a

4. git checkout

切换/创建本地分支,文件和当前branch信息都会改变。

# 查看本地分支
git branch
# 新建分支
git branch new_branch

# 切换分支
git checkout new_branch
# (新建且)切换分支
git checkout -b new_branch

# push并关联新建的分支到远程分支remote_branch(不过通常会同名)
git push origin new_branch : remote_branch
git branch --set-upstream-to=origin/remote_branch

5. git merge

比如你为了解决某个问题,创建了分支iss53,并且已经解决了

# Switched to branch 'master'
git checkout master

# merge, 这一步可能会有冲突,有图形界面的话可以鼠标选择
git merge iss53

# delete iss53
git branch -d iss53

一个很好的 例子 ,讲解两种合并的情况

GIT使用基本逻辑

工作流程:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交

Git使用经验 (慢慢更新)_第1张图片

参考

  1. git 菜鸟教程

你可能感兴趣的