将文件夹变成git库,并让git获取当前目录管理权限
git init
此时会生成.git
文件夹。
git status
git add filename.txt
从暂存区删除
git rm --cached filename.txt
git commit -m "message" filename.txt
如果想修改文件后不add
直接添加到本地库:
git commit -am "message"
查看提交日志
git reflog
git log
git reset --hard version_id
本地上显示的总是master中的版本。
常看分支
git branch -v
创建分支
git branch branch_name
切换分支
git checkout branch_name
然后可以在当前分支上修改,并通过git add
和git commit
提交。
删除分支
git branch --delete branch_name
将两个分支合并
git merge branch_name
代码冲突时,需要手动合并。合并完成后,添加到暂存区
git add filename.txt
git commit -m # remove filename
因为github远程代码库链接较长,因此需要创建别名。
git remote add local_name https://github.com/git-demo.git
查看所有的别名
git remote -v
删除别名
git remote rm local_name
在开发时,要保持与远程库一致,否则推送时会报错。
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
git push local_name branch_name
预览要删除的文件:
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
设置存储格式,明文存储
export GCM_CREDENTIAL_STORE="plaintext"
使用如下命令设置
git config --global credential.helper store
执行后home目录下的.gitconfig文件中多加 helper = store
[credential]
helper = store
credentialStore = plaintext
然后在项目目录,执行git pull命令,会提示输入账号密码。这次输入账号密码之后,就会记住账号密码,并且会在当前用户根目录下生成一个.git-credentials
文件,下一次就不用再输入账号密码了。
IDE等相关配置文件不应上传的文件或文件夹放到.gitignore
文件中。可以手动创建该文件,然后添加文件或文件夹:
.idea
*.log
.gitignore
有时对某些文件无效。原因是 .gitignore
只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交。
git rm -r --cached . # 所有文件都不再进行版本管理,即从本地repository中删除所有
git add . # 重新添加到本地repository,此时会读取.gitignore文件
git commit -m 'update .gitignore'
如果只是将工作区的问价删除了,但是没有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不生效
有的时候前期有很多commit
会严重污染提交记录,因此需要在不删除远程仓库的前提下清楚提交历史。方法如下:
git checkout --orphan new_branch
git add .
git commit -m message
git branch -D master
git branch -m master
git push -f origin master