Skip to content

Latest commit

 

History

History
166 lines (137 loc) · 3.93 KB

README.md

File metadata and controls

166 lines (137 loc) · 3.93 KB

GIT

安装Git v2.x====

升级git方法

Git子模块指南

新增、更新和删除

✅基础命令✅

太基础的就不写了,没必要。

# delete local branch, -d是删除, -D是强制删除
git branch -D localBranchName

✅低频命令✅

checkout所有分支到本地
for branch in `git branch -r | grep -v '\->'`; do
    git branch --track "${branch#origin/}" "$branch"
done
推送所有分支和tag到远端
git push --all && git push --tags
delete branch
# delete remote branch or tag
git push origin --delete <remoteBranchName or tagName>
tag
# 清除远程已经不存在的分支的跟踪分
git fetch -p

# create tag
git tag <tag_name>

# delete tag
git tag -d <tag_name>

# push tag to remote
git push --tags
git push --tag
color ui output

git config color.ui true

🔶Git lfs🔶

Install
# git lfs need git version >= 1.8.2
yum install git-lfs -y
git lfs install

🔶Git Submodule🔶

git submodule add [email protected]:miaoyc666/pyArsenal.git
git submodule init
git submodule update
使用步骤
  1. git lfs install开启lfs功能
  2. 大文件cp到git库
  3. git lfs track进行大文件追踪, 例如:git lfs track abc/aaa.tgz 此时cat .gitattributes,会看到:abc/aaa.tgz filter=lfs diff=lfs merge=lfs -text
  4. git add .gitattributes
  5. commit
  6. git lfs ls-files可以显示当前跟踪的文件列表

🔶不常用命令🔶

设置本地分支对应的远程分支的方法

git push -u origin {branch name}

修改远端项目地址
git remote rm origin
git remote add origin <new project>
回滚到指定版本
git reset --hard {commit_id}
git push --force    # 慎重使用
合并以对方分支为准
git merge -X theirs origin/xxxxx-branch
修改提交记录:
git rebase -i HEAD~3        # 3此处为可变,数值表示需要修改的最近几条提交的数量
git commit --amend 
git rebase --continue
三条语句组合使用

# 举例如下:修改最后一条提交记录的时间
1.git rebase -i HEAD~1, 输入完命令后在弹出框内选择commit, 修改commit前的标识为edit
2.git commit --amend --date="2021-12-26T23:01:07"
3.git rebase --continue
4.git push --force        # 慎重使用
修改提交用户名和邮箱
git filter-branch --env-filter '
OLD_EMAIL="[email protected]" 
CORRECT_NAME="miaoyc"
CORRECT_EMAIL="[email protected]"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' -f --tag-name-filter cat -- --branches --tags
拷贝git项目到新库步骤
# 镜像仓库的方式 
1. git clone --bare [email protected]:miaoyc666/rd-manual.git
2. 新建git库: [email protected]:miaoyc666/rd-manual_new.git
3. cd rd-manual.git
4. git push --mirror [email protected]:miaoyc666/rd-manual_new.git

# 修改远程仓库的方式
1. 新建git库: [email protected]:miaoyc666/rd-manual_new.git
2. 在旧仓库新增远程仓库:git remote add home [email protected]:miaoyc666/rd-manual_new.git
3. git push home 
向已存在的非空仓库A推动仓库B的代码
git clone https://example.com/repo-B.git
cd repo-B
git remote add repo-A https://example.com/repo-A.git
git push repo-A main --force        # 此处main表示想要推送的仓库B的分支名称,如果仓库A存在main分支,会覆盖提交
切换git库的两个方法
1. 重新git clone项目;
2. 修改.git/config文件, 将[email protected]:miaoyc666/rd-manual.git替换为[email protected]:miaoyc666/rd-manual_new.git

❌尽量不要使用的命令❌

强行推送tag到远端

git push --force