github常见命令

1. 初始化

将文件夹变成git库,并让git获取当前目录管理权限

git init

此时会生成.git文件夹。

2. 查看当前项目状态

git status

3. 将文件从本地工作区添加到暂存区

git add filename.txt

从暂存区删除

git rm --cached filename.txt

4. 提交到本地库形成历史版本

git commit -m "message" filename.txt

如果想修改文件后不add直接添加到本地库:

git commit -am "message"

查看提交日志

git reflog

git log

5. 更改版本

git reset --hard version_id

本地上显示的总是master中的版本。

6. 分支操作

常看分支

git branch -v

创建分支

git branch branch_name

切换分支

git checkout branch_name

然后可以在当前分支上修改,并通过git addgit commit提交。

删除分支

git branch --delete branch_name

7 合并分支

将两个分支合并

git merge branch_name

代码冲突时,需要手动合并。合并完成后,添加到暂存区

git add filename.txt

git commit -m  # remove filename

8. 团队协作

8.1 为github代码库创建别名

因为github远程代码库链接较长,因此需要创建别名。

git remote add local_name https://github.com/git-demo.git

查看所有的别名

git remote -v

删除别名

git remote rm local_name

8.2 本地与远程同步

在开发时,要保持与远程库一致,否则推送时会报错。

git pull local_name branch

有时pull会遇到fatal: refusing to merge unrelated histories,使用如下命令

git pull local_name branch --allow-unrelated-histories

然后修改本地文件,并推送到远程库

git push local_name branch

8.2 本地分支推送到远程代码库

git push local_name branch_name

8.3 删除远程库中的文件

预览要删除的文件:

git rm -r -n --cached file/folder

确认后删除

git rm -r --cached file/folder

此时的删除指的时让该文件不要再被git追踪,也就是不加入版本控制。但是工作区,也就是本地文件夹不受影响。注意一定要加上--cached

修改.gitignore并提交,删除远程库中的对应文件

git push local_name branch

有时push会遇到需要先! [rejected] master -> master (fetch first) error: failed to push some refs to,此时需要先将远程库中的文件下载pull保持本地与远程库的一致:

git pull origin master --allow-unrelated-histories

9. Https免密登录

设置存储格式,明文存储

export GCM_CREDENTIAL_STORE="plaintext"

使用如下命令设置

git config --global credential.helper store

执行后home目录下的.gitconfig文件中多加 helper = store

[credential]
        helper = store
        credentialStore = plaintext

然后在项目目录,执行git pull命令,会提示输入账号密码。这次输入账号密码之后,就会记住账号密码,并且会在当前用户根目录下生成一个.git-credentials文件,下一次就不用再输入账号密码了。

10. 忽略某些文件

IDE等相关配置文件不应上传的文件或文件夹放到.gitignore文件中。可以手动创建该文件,然后添加文件或文件夹:

.idea
*.log

.gitignore有时对某些文件无效。原因是 .gitignore 只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交。

git rm -r --cached .  # 所有文件都不再进行版本管理,即从本地repository中删除所有

git add .  # 重新添加到本地repository,此时会读取.gitignore文件

git commit -m 'update .gitignore'

11 误删除文件的恢复

如果只是将工作区的问价删除了,但是没有commit,因此repository中仍然有该文件,使用如下命令恢复

git restore filename/folder

如果git rm时没有加--cached误将工作区的文件也删除了并且还commit了,此时工作区和本地库中的文件都被删除了,使用如下命令恢复

首先查看历史提交记录

git log --diff-filter=D --summary --pretty=format:"%h - %an, %ar : %s" --graph

或者

git reflog 

%h表示简写hash code, %an表示显示提交的username%ar作者修订日期,按多久以前的方式显示, %ad 作者修订日期(可以用 --date=选项 来定制格式),%cd提交日期 %cr提交日期(距今多长时间) %s 提交说明。然后选择一个想要恢复的commit_id, 然后恢复:

git reset --hard commit_id

如果使用git rm但是没有commit,则使用如下命令

git reset --hard HEAD

--hard表示工作区和本地库同时刷新。

这样删除的文件就自动回来了。

参考:
知乎: Git 的使用——提交避免输入用户名和密码
Git忽略规则.gitignore不生效

12. 删除被污染的commit记录

有的时候前期有很多commit会严重污染提交记录,因此需要在不删除远程仓库的前提下清楚提交历史。方法如下:

12.1 创建新分支

git checkout --orphan new_branch

12.2 添加所有文件

git add .
git commit -m message

12.3 删除原分支

git branch -D master

12.4 重命名当前分支

git branch -m master

12.5 推送到远程库

git push -f origin master

13 修改用户名密码

查看当前的用户名邮箱

git config user.name
git config user.email

修改

git config --global --replace-all user.name "new_uname"
git config --global --replace-all user.email "new_email"
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值