Assin丶墨

Git常用命令

配置

  • 初始化
git init
  • 查看配置
cat ~/.gitconfig
  • 添加别名
# 格式
git config --global alias.<alias> '代替的命令'
# 例如(使用cm代替commit -m)
git config --global alias.cm 'commit -m'
  • 用户名
# 格式(全局)
git config --global user.name  "username"  
git config --global user.email  "email"
# 修改(全局)
git config --replace-all user.name "username"
git config --replace-all user.email "email"
  • 大小问题(git默认配置为忽略大小写)
# 关闭git忽略大小写配置
git config core.ignorecase false

添加远端

  • 查看所有远端
git remote
# 或
git remote -v
  • 要关联一个远程库,使用命令
git remote add <origin_name> <demo_git_address>
  • 关联后,使用命令
git push -u origin master
# 第一次推送master分支的所有内容,以后使用如下命令即可
git push
  • 移除远端
git remote rm <origin_name>

git基本操作

  • 添加当前目录下的所有文件
git add .
  • 提交到本地
git commit -m <commit_content_description>
  • 推送本地到远端
git push <origin_name> <branch_name>
  • 拉取远端数据
git pull <origin_name> <branch_name>
  • 强制拉取远端数据覆盖本地(会丢弃本地数据)
git fetch --all && git reset --hard <origin_name>/<branch_name> && git pull <origin_name> <branch_name>

分支的使用总结与注意

  • 注意:不能子分支之间合并,也不能把子分支合并到主分支上,只能子分支合并(merge)主分支(master),主分支上一般修改通用功能,子分支上只是修改本分支上的独有功能,若想把这个分支独有功能移植到主分支,可以使用 git stash 功能;
  • 从分支拉取代码方式
git clone -b <branch_name> <demo_git_address>
  • 从本地创建一个与远端的分支一样的分支
git switch -t <origin/branch_name>
  • 创建分支
git branch <branck_name>
  • 查看分支
git branch -a
  • 切换分支
git switch <branch_name> || git checkout <branckName>
  • 创建并切换分支
git switch -c <branck_name> || git checkout -b <branck_name>
  • 合并分支
git merge <branck_name>
  • 删除本地分支
git branch -D <branck_name>
  • 删除远端(origin)分支
git push origin --delete <branch_name>
  • 推送本地分支到远端(远端不存才)
git push <origin_name> <current_branch_name>:<origin_branch_name>

stash的使用总结与注意

  • 注意: git add 只是把文件加到git 版本控制里,并不等于就被 stash 起来了, git addgit stash 没有必然的关系,但是执行 git stash 能正确存储的前提是文件必须在git 版本控制中才行;
  • 添加stash
git stash
# 添加说明使用如下
git stash save <stash_name>

# stach 未跟踪的文件
git stash -u
  • 查看stash了哪些存储
git stash list
  • 显示做了哪些改动
# 默认显示第一个
git stash show
# 显示其他的
git stash show stash@{num}
# 例如(显示第二个)
git stash show stash@{1}
  • 应用某个存储,不会把存储从存储列表中删除
# 默认使用第一个存储
git stach apply
# 使用其他存储
git stash apply stash@{$num}
# 例如(使用第二个)
git stash apply stash@{1}
  • 应用某个存储,会把存储从存储列表中删除
# 默认弹出第一个存储
git stach pop
# 弹出其他存储
git stash pop stash@{$num}
# 例如(弹出第二个)
git stash pop stash@{1}
  • 从列表中删除这个存储
# 默认删掉第一个
git stach drop
# 删除指定
git stash drop stash@{$num}
# 例如(删除第二个)
git stach drop stash@{1}
  • 清空所有缓存的stash
git stash clear

撤销&回退

  • 未使用 git add 缓存代码时
# 格式(注:不要忘记中间的"--",不写就成了检出分支了!)
git checkout -- filepathname
# 例如:
git checkout -- readme.md
# 放弃所以的缓存可以使用
git checkout .
  • 已使用 git add 缓存了代码时
# 格式
git reset HEAD filepathname
# 例如:
git reset HEAD readme.md
# 放弃所以的缓存可以使用
git reset HEAD .
  • 已使用 git commit 提交了代码时
# 回退到上一次commit的状态
git reset --hard HEAD^
# 此命令可以用来回退到任意版本
git reset --hard <commitid>
# 使用如下命令来查看提交历史
git log
  • 丢弃未跟踪的本地修改
# 删除 untracked files
git clean -f
# 连 untracked 的目录也一起删掉
git clean -fd
# 连 gitignore 的untrack文件/目录也一起删掉(慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
# 在用上述 git clean前,强烈建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nf
git clean -nfd

复制其他分支

  • 复制其他分支的单次提交
# 格式 (注:复制后,自动commit了,所以只是需要push就行)
git cherry-pick <commitid> 
# 若不想自动提交,可以添加参数--no-commit 如:
git cherry-pick <commitid> --no-commit
  • 复制其他分支的单个文件(文件夹)
# 格式
git checkout <other_branch> <filepathname>
# 例如
git checkout master assets/Game/Scripts/Views/GameContol.ts
  • 合并其他分支的单个文件
# 格式
git checkout --patch <branch_name> <filenamepath>
# 例如
git checkout --patch branchB test.c
...
Apply this hunk to index and worktree [y,n,q,a,d,/,K,g,e,?]?

y - 存储这个hunk 
n - 不存储这个hunk 
q - 离开,不存储这个hunk和其他hunk 
a - 存储这个hunk和这个文件后面的hunk 
d - 不存储这个hunk和这个文件后面的hunk 
g - 选择一个hunk 
/ - 通过正则查找hunk 
j - 不确定是否存储这个hunk,看下一个不确定的hunk 
J - 不确定是否存储这个hunk,看下一个hunk 
k - 不确定是否存储这个hunk,看上一个不确定的hunk 
K - 不确定是否存储这个hunk,看上一个hunk 
s - 把当前的hunk分成更小的hunks 
e - 手动编辑当前的hunk 
? - 输出帮助信息

posted on 2021-12-07 18:59  Assin丶墨  阅读(27)  评论(0)    收藏  举报