git的一些命令

git的一些命令

Git global setup
git config --global user.name "王敬民"
git config --global user.email "jingmin.wang@vivachek.com"
Create a new repository
git clone git@120.26.90.180:wangjingmin/vivachekcloud_dev_export.git
cd vivachekcloud_dev_export
git switch -c main
touch README.md
git add README.md
git commit -m "add README"
git push -u origin main
Push an existing folder
cd existing_folder
git init --initial-branch=main
git remote add origin git@120.26.90.180:wangjingmin/vivachekcloud_dev_export.git
git add .
git commit -m "Initial commit"
git push -u origin main
Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin git@120.26.90.180:wangjingmin/vivachekcloud_dev_export.git
git push -u origin --all
git push -u origin --tags
从所有分支中检索提交记录
# 检索包含“xxx”的commit
git log --all --oneline | git grep xxx

# 查询对应的commitId属于哪些branch
git branch -r --contains COMMIT_ID
配置代理

用户目录/.ssh/config文件中配置(不存在则新增):

类似这样

Host github.com
    User git
    ProxyCommand connect -H 127.0.0.1:10808 %h %p
Host gcc.gnu.org
    User git
    ProxyCommand connect -S 127.0.0.1:10808 %h %p
调整历史提交
git rebase -i  xxxx_commit_id

pick xxx
squash ooo
pick yyy

...
拆分历史提交

参考: https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2

最最先,如果为了安全,最好先备份下分支

git checkout branch_xxx  #需要修改提交记录的分支
git checkout -b branch_xxx_bak  #从该分支新建一个新分支(备份分支)
git checkout branch_xxx  #切回需要修改提交记录的分支, 继续操作

首先,从指定的位置开始rabase

git rebase -i xxx_commit_id

pick xxx
edit yyy  #提交后,会停在这个yyy提交的位置
pick ooo

然后在yyy提交的位置,撤销该提交(撤销本地提交记录)

git reset HEAD^

那里,可以通过 git reset HEAD^ 做一次针对那个提交的混合重置,实际上将会撤消那次提交并将修改的文件取消暂存。 现在可以暂存并提交文件直到有几个提交,然后当完成时运行 git rebase --continue

然后重新提交(这里是拆分为几次提交).


git add a.c
git commit -m "mmm"

git add b.java
git commit -m "nnn"

...

最后, 继续rebase,保证后面的提交不丢失.

git rebase --continue

最最后, 将rabase整理过后的提交记录,强制更新到远程 (注意,非常危险!!!)

git push -f origin branch_remote:branch_local
git删除未跟踪文件
# 删除 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

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注